package ink.teamwork.battery.model;

import lombok.Data;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.RandomStringUtils;

import java.util.List;

@Data
public class WechatConfig {
    /**
     * 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
     */
    private Boolean debug;
    /**
     * 必填，公众号的唯一标识
     */
    private String appId;
    /**
     * 必填，生成签名的时间戳
     */
    private Long timestamp;
    /**
     * 必填，生成签名的随机串
     */
    private String nonceStr;
    /**
     * 必填，签名
     */
    private String signature;
    private List<String> jsApiList;

    public static WechatConfig build(String appId, String url, String ticket) {
        WechatConfig config = new WechatConfig();
        config.appId = appId;
        config.debug = false;
        config.nonceStr = RandomStringUtils.secure().nextAlphabetic(16);
        config.timestamp = System.currentTimeMillis();
        String sign = "jsapi_ticket=%s&nonceStr=%s&timestamp=%d&url=%s";
        config.signature = DigestUtils.sha1Hex(String.format(sign, ticket, config.nonceStr, config.timestamp, url));
        return config;
    }
}
